home *** CD-ROM | disk | FTP | other *** search
/ BMUG Revelations / BMUG Revelations.toast / Programming / Programming Languages / Harvest C / MPW Int & Lib / Interfaces / PPCToolBox.h < prev    next >
Text File  |  1991-04-17  |  11KB  |  378 lines

  1. /************************************************************
  2.  
  3. Created: Sunday, January 6, 1991 at 9:38 PM
  4.     PPCToolBox.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.         Copyright Apple Computer, Inc.    1989-1990
  9.         All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #ifndef __PPCTOOLBOX__
  15. #define __PPCTOOLBOX__
  16.  
  17. #ifndef __APPLETALK__
  18. #include <AppleTalk.h>
  19. #endif
  20.  
  21. #ifndef __MEMORY__
  22. #include <Memory.h>
  23. #endif
  24.  
  25. #ifndef __TYPES__
  26. #include <Types.h>
  27. #endif
  28.  
  29.  
  30. typedef unsigned char PPCServiceType;
  31.  
  32. enum {
  33.  
  34.  
  35. /*  service Type  */
  36.     ppcServiceRealTime = 1
  37. };
  38.  
  39. typedef short PPCLocationKind;
  40.  
  41. enum {
  42.  
  43.  
  44. /* lookup Type */
  45.     ppcNoLocation = 0,                          /* There is no PPCLocName */
  46.     ppcNBPLocation = 1,                         /* Use AppleTalk NBP      */
  47.     ppcNBPTypeLocation = 2                      /* Used for specifying a location name type during PPCOpen only */
  48. };
  49.  
  50. typedef short PPCPortKinds;
  51.  
  52. enum {
  53.  
  54.  
  55. /* port Types */
  56.  
  57.     ppcByCreatorAndType = 1,                    /* PortType is specified as colloquial Mac creator and type */
  58.     ppcByString = 2                             /* Port Type is in pascal string format */
  59. };
  60.  
  61. typedef unsigned char PPCSessionOrigin;         /* Values returned for request field in PPCInform call */
  62.  
  63. enum {
  64.  
  65.  
  66. /* Values returned for requestType field in PPCInform call */
  67.     ppcLocalOrigin = 1,                         /* session originated from this machine */
  68.     ppcRemoteOrigin = 2                         /* session originated from remote machine */
  69. };
  70.  
  71. typedef short PPCPortRefNum;
  72. typedef long PPCSessRefNum;
  73.  
  74. struct PPCPortRec {
  75.     ScriptCode nameScript;                      /* script of name */
  76.     Str32 name;                                 /* name of port as seen in browser */
  77.     PPCPortKinds portKindSelector;              /* which variant */
  78.     union {
  79.         Str32 portTypeStr;                      /* pascal type string */
  80.         struct {
  81.             OSType creator;
  82.             OSType type;
  83.             } port;
  84.         } u;
  85. };
  86.  
  87. typedef struct PPCPortRec PPCPortRec;
  88. typedef PPCPortRec *PPCPortPtr;
  89.  
  90. struct LocationNameRec {
  91.     PPCLocationKind locationKindSelector;       /* which variant */
  92.     union {
  93.         EntityName nbpEntity;                   /* NBP name entity */
  94.         Str32 nbpType;                          /* just the NBP type string, for PPCOpen */
  95.         } u;
  96. };
  97.  
  98. typedef struct LocationNameRec LocationNameRec;
  99. typedef LocationNameRec *LocationNamePtr;
  100.  
  101. struct PortInfoRec {
  102.     unsigned char filler1;
  103.     Boolean authRequired;
  104.     PPCPortRec name;
  105. };
  106.  
  107. typedef struct PortInfoRec PortInfoRec;
  108. typedef PortInfoRec *PortInfoPtr;
  109.  
  110.  
  111. typedef PortInfoRec *PortInfoArrayPtr;
  112. typedef pascal Boolean (*PPCFilterProcPtr)(LocationNamePtr, PortInfoPtr);
  113. /*Procedures you will need to write 
  114.  ex: void MyCompletionRoutine(PPCParamBlkPtr pb) 
  115.  ex: pascal Boolean    MyPortFilter(LocationNamePtr locationName, PortInfoPtr 
  116.  thePortInfo)*/
  117.  
  118. typedef ProcPtr PPCCompProcPtr;
  119. #define PPCHeader \
  120.      Ptr               qLink;                   /* PPC's Internal Use */\
  121.      unsigned short    csCode;                  /* Requested PPC command */\
  122.      unsigned short    intUse;                  /* Internal Use */\
  123.      Ptr               intUsePtr;               /* Internal Use */\
  124.      PPCCompProcPtr       ioCompletion;         /* Completion Routine    */\
  125.      OSErr               ioResult;              /* Command Result Code */\
  126.      unsigned long       Reserved[5];           /* Reserved for PPC, Don't use */
  127.  
  128. struct PPCOpenPBRec {
  129.     PPCHeader 
  130.     PPCPortRefNum portRefNum;                   /* Port Reference */
  131.     long filler1;
  132.     PPCServiceType serviceType;                 /*  Bit field describing the requested port service    */
  133.     unsigned char resFlag;                      /* Must be set to 0 */
  134.     PPCPortPtr portName;                        /* PortName for PPC */
  135.     LocationNamePtr locationName;               /* If NBP Registration is required */
  136.     Boolean networkVisible;                     /* make this network visible on network */
  137.     Boolean nbpRegistered;                      /* The given location name was registered on the network */
  138. };
  139.  
  140. typedef struct PPCOpenPBRec PPCOpenPBRec;
  141. typedef PPCOpenPBRec *PPCOpenPBPtr;
  142.  
  143. struct PPCInformPBRec {
  144.  PPCHeader
  145.  PPCPortRefNum portRefNum;
  146.     PPCSessRefNum sessRefNum;
  147.     PPCServiceType serviceType;
  148.     Boolean autoAccept;
  149.     PPCPortPtr portName;
  150.     LocationNamePtr locationName;
  151.     StringPtr userName;
  152.     unsigned long userData;
  153.     PPCSessionOrigin requestType;
  154. };
  155.  
  156. typedef struct PPCInformPBRec PPCInformPBRec;
  157. typedef PPCInformPBRec *PPCInformPBPtr;
  158.  
  159. struct PPCStartPBRec {
  160.  PPCHeader
  161.     PPCPortRefNum portRefNum;
  162.     PPCSessRefNum sessRefNum;
  163.     PPCServiceType serviceType;
  164.     unsigned char resFlag;
  165.     PPCPortPtr portName;
  166.     LocationNamePtr locationName;
  167.     unsigned long rejectInfo;
  168.     unsigned long userData;
  169.     unsigned long userRefNum;
  170. };
  171.  
  172. typedef struct PPCStartPBRec PPCStartPBRec;
  173. typedef PPCStartPBRec *PPCStartPBPtr;
  174.  
  175. struct PPCAcceptPBRec {
  176.  PPCHeader
  177.     short filler1;
  178.     PPCSessRefNum sessRefNum;
  179. };
  180.  
  181. typedef struct PPCAcceptPBRec PPCAcceptPBRec;
  182. typedef PPCAcceptPBRec *PPCAcceptPBPtr;
  183.  
  184. struct PPCRejectPBRec {
  185.  PPCHeader
  186.     short filler1;
  187.     PPCSessRefNum sessRefNum;
  188.     short filler2;
  189.     long filler3;
  190.     long filler4;
  191.     unsigned long rejectInfo;
  192. };
  193.  
  194. typedef struct PPCRejectPBRec PPCRejectPBRec;
  195. typedef PPCRejectPBRec *PPCRejectPBPtr;
  196.  
  197. struct PPCWritePBRec {
  198.  PPCHeader
  199.     short filler1;
  200.     PPCSessRefNum sessRefNum;
  201.     Size bufferLength;
  202.     Size actualLength;
  203.     Ptr bufferPtr;
  204.     Boolean more;
  205.     unsigned char filler2;
  206.     unsigned long userData;
  207.     OSType blockCreator;
  208.     OSType blockType;
  209. };
  210.  
  211. typedef struct PPCWritePBRec PPCWritePBRec;
  212. typedef PPCWritePBRec *PPCWritePBPtr;
  213.  
  214. struct PPCReadPBRec {
  215.  PPCHeader
  216.     short filler1;
  217.     PPCSessRefNum sessRefNum;
  218.     Size bufferLength;
  219.     Size actualLength;
  220.     Ptr bufferPtr;
  221.     Boolean more;
  222.     unsigned char filler2;
  223.     unsigned long userData;
  224.     OSType blockCreator;
  225.     OSType blockType;
  226. };
  227.  
  228. typedef struct PPCReadPBRec PPCReadPBRec;
  229. typedef PPCReadPBRec *PPCReadPBPtr;
  230.  
  231. struct PPCEndPBRec {
  232.  PPCHeader
  233.     short filler1;
  234.     PPCSessRefNum sessRefNum;
  235. };
  236.  
  237. typedef struct PPCEndPBRec PPCEndPBRec;
  238. typedef PPCEndPBRec *PPCEndPBPtr;
  239.  
  240. struct PPCClosePBRec {
  241.  PPCHeader
  242.     PPCPortRefNum portRefNum;
  243. };
  244.  
  245. typedef struct PPCClosePBRec PPCClosePBRec;
  246. typedef PPCClosePBRec *PPCClosePBPtr;
  247.  
  248. struct IPCListPortsPBRec {
  249.  PPCHeader
  250.     short filler1;
  251.     unsigned short startIndex;
  252.     unsigned short requestCount;
  253.     unsigned short actualCount;
  254.     PPCPortPtr portName;
  255.     LocationNamePtr locationName;
  256.     PortInfoArrayPtr bufferPtr;
  257. };
  258.  
  259. typedef struct IPCListPortsPBRec IPCListPortsPBRec;
  260. typedef IPCListPortsPBRec *IPCListPortsPBPtr;
  261.  
  262. union PPCParamBlockRec
  263. {
  264.         PPCOpenPBRec        openParam;
  265.         PPCInformPBRec           informParam;
  266.         PPCStartPBRec        startParam;
  267.         PPCAcceptPBRec         acceptParam;
  268.         PPCRejectPBRec         rejectParam;
  269.         PPCWritePBRec        writeParam;
  270.         PPCReadPBRec        readParam;
  271.         PPCEndPBRec              endParam;
  272.         PPCClosePBRec        closeParam;
  273.         IPCListPortsPBRec    listPortsParam;
  274. };
  275. typedef union PPCParamBlockRec PPCParamBlockRec;
  276. typedef  PPCParamBlockRec  *PPCParamBlockPtr;
  277.  
  278.  
  279. #ifdef __cplusplus
  280. extern "C" {
  281. #endif
  282. /*  PPC Calling Conventions  */
  283. #pragma parameter __D0 PPCInit
  284. pascal OSErr PPCInit(void)
  285.     = {0x7000,0xA0DD}; 
  286. pascal OSErr PPCOpen(PPCOpenPBPtr pb,Boolean async); 
  287. #pragma parameter __D0 PPCOpenSync(__A0)
  288. pascal OSErr PPCOpenSync(PPCOpenPBPtr pb)
  289.     = {0x7001,0xA0DD}; 
  290. #pragma parameter __D0 PPCOpenAsync(__A0)
  291. pascal OSErr PPCOpenAsync(PPCOpenPBPtr pb)
  292.     = {0x7001,0xA4DD}; 
  293. pascal OSErr PPCInform(PPCInformPBPtr pb,Boolean async); 
  294. #pragma parameter __D0 PPCInformSync(__A0)
  295. pascal OSErr PPCInformSync(PPCInformPBPtr pb)
  296.     = {0x7003,0xA0DD}; 
  297. #pragma parameter __D0 PPCInformAsync(__A0)
  298. pascal OSErr PPCInformAsync(PPCInformPBPtr pb)
  299.     = {0x7003,0xA4DD}; 
  300. pascal OSErr PPCStart(PPCStartPBPtr pb,Boolean async); 
  301. #pragma parameter __D0 PPCStartSync(__A0)
  302. pascal OSErr PPCStartSync(PPCStartPBPtr pb)
  303.     = {0x7002,0xA0DD}; 
  304. #pragma parameter __D0 PPCStartAsync(__A0)
  305. pascal OSErr PPCStartAsync(PPCStartPBPtr pb)
  306.     = {0x7002,0xA4DD}; 
  307. pascal OSErr PPCAccept(PPCAcceptPBPtr pb,Boolean async); 
  308. #pragma parameter __D0 PPCAcceptSync(__A0)
  309. pascal OSErr PPCAcceptSync(PPCAcceptPBPtr pb)
  310.     = {0x7004,0xA0DD}; 
  311. #pragma parameter __D0 PPCAcceptAsync(__A0)
  312. pascal OSErr PPCAcceptAsync(PPCAcceptPBPtr pb)
  313.     = {0x7004,0xA4DD}; 
  314. pascal OSErr PPCReject(PPCRejectPBPtr pb,Boolean async); 
  315. #pragma parameter __D0 PPCRejectSync(__A0)
  316. pascal OSErr PPCRejectSync(PPCRejectPBPtr pb)
  317.     = {0x7005,0xA0DD}; 
  318. #pragma parameter __D0 PPCRejectAsync(__A0)
  319. pascal OSErr PPCRejectAsync(PPCRejectPBPtr pb)
  320.     = {0x7005,0xA4DD}; 
  321. pascal OSErr PPCWrite(PPCWritePBPtr pb,Boolean async); 
  322. #pragma parameter __D0 PPCWriteSync(__A0)
  323. pascal OSErr PPCWriteSync(PPCWritePBPtr pb)
  324.     = {0x7006,0xA0DD}; 
  325. #pragma parameter __D0 PPCWriteAsync(__A0)
  326. pascal OSErr PPCWriteAsync(PPCWritePBPtr pb)
  327.     = {0x7006,0xA4DD}; 
  328. pascal OSErr PPCRead(PPCReadPBPtr pb,Boolean async); 
  329. #pragma parameter __D0 PPCReadSync(__A0)
  330. pascal OSErr PPCReadSync(PPCReadPBPtr pb)
  331.     = {0x7007,0xA0DD}; 
  332. #pragma parameter __D0 PPCReadAsync(__A0)
  333. pascal OSErr PPCReadAsync(PPCReadPBPtr pb)
  334.     = {0x7007,0xA4DD}; 
  335. pascal OSErr PPCEnd(PPCEndPBPtr pb,Boolean async); 
  336. #pragma parameter __D0 PPCEndSync(__A0)
  337. pascal OSErr PPCEndSync(PPCEndPBPtr pb)
  338.     = {0x7008,0xA0DD}; 
  339. #pragma parameter __D0 PPCEndAsync(__A0)
  340. pascal OSErr PPCEndAsync(PPCEndPBPtr pb)
  341.     = {0x7008,0xA4DD}; 
  342. pascal OSErr PPCClose(PPCClosePBPtr pb,Boolean async); 
  343. #pragma parameter __D0 PPCCloseSync(__A0)
  344. pascal OSErr PPCCloseSync(PPCClosePBPtr pb)
  345.     = {0x7009,0xA0DD}; 
  346. #pragma parameter __D0 PPCCloseAsync(__A0)
  347. pascal OSErr PPCCloseAsync(PPCClosePBPtr pb)
  348.     = {0x7009,0xA4DD}; 
  349. pascal OSErr IPCListPorts(IPCListPortsPBPtr pb,Boolean async); 
  350. #pragma parameter __D0 IPCListPortsSync(__A0)
  351. pascal OSErr IPCListPortsSync(IPCListPortsPBPtr pb)
  352.     = {0x700A,0xA0DD}; 
  353. #pragma parameter __D0 IPCListPortsAsync(__A0)
  354. pascal OSErr IPCListPortsAsync(IPCListPortsPBPtr pb)
  355.     = {0x700A,0xA4DD}; 
  356. pascal OSErr DeleteUserIdentity(unsigned long userRef); 
  357. pascal OSErr GetDefaultUser(unsigned long *userRef,
  358.                             Str32 userName); 
  359. pascal OSErr StartSecureSession(PPCStartPBPtr pb,
  360.                                 Str32 userName,
  361.                                 Boolean useDefault,
  362.                                 Boolean allowGuest,
  363.                                 Boolean *guestSelected,
  364.                                 ConstStr255Param prompt); 
  365. pascal OSErr PPCBrowser(ConstStr255Param prompt,
  366.                         ConstStr255Param applListLabel,
  367.                         Boolean defaultSpecified,
  368.                         LocationNameRec *theLocation,
  369.                         PortInfoRec *thePortInfo,
  370.                         PPCFilterProcPtr portFilter,
  371.                         ConstStr32Param theLocNBPType)
  372.     = {0x303C,0x0D00,0xA82B}; 
  373. #ifdef __cplusplus
  374. }
  375. #endif
  376.  
  377. #endif
  378.